#ifndef IMAGE_H_
#define IMAGE_H_

#include "Defines.h"

#include <cv.h>
#include <highgui.h>

using namespace cv;

/*-----------------------------------------------------------------------------
 *  Índices de uma imagem BGR
 *-----------------------------------------------------------------------------*/
#define B 0
#define G 1
#define R 2

/*-----------------------------------------------------------------------------
 *  Tipo imagem
 *-----------------------------------------------------------------------------*/
typedef Mat Image;

/*
 * =====================================================================================
 *        Class:  ImageIO
 *  Description:  Classe que fornece algumas utilidades de IO para imagens
 * =====================================================================================
 */
class ImageIO
{

public:

    /*-----------------------------------------------------------------------------
     *  Lê uma imagem de um arquivo
     *-----------------------------------------------------------------------------*/
    static Image read(const string& filename, int flags = 1);

    /*-----------------------------------------------------------------------------
     *  Escreve a imagem em um arquivo
     *-----------------------------------------------------------------------------*/
    static void write(const Image& image, const string& filename, const vint& params = vint());

    /*-----------------------------------------------------------------------------
     *  Exibe uma imagem em uma janela
     *-----------------------------------------------------------------------------*/
    static void show(Image& image, const string& window);

    /*-----------------------------------------------------------------------------
     *  Espera uma tecla ser pressionada
     *-----------------------------------------------------------------------------*/
    static void wait(int time = 0);

};

#endif /* IMAGE_H_ */
